<?php
namespace Rate\Controller;
use Todo\Controller\ApiController;
use Todo\Util\ExcelUtil;

class ImportsController extends ApiController {

    /**
     * 导入
     */
    public function imports(){
        $proId = I('post.project_id/d');
        if(!$proId) $this->apiError("必须选择项目!");

        $info = D('Todo/Rate/Project')->keyFind($proId);
        if(!$info) $this->apiError("项目不存在!");

        $file = I('post.excel');
        if(!$file) $this->apiError("请先上传文件!");

        $file =  C('FILE_UPLOAD.rootPath').$file;
        if(!file_exists($file)) $this->apiError("文件未上传成功或被删除，请重新上传文件!");

        $excel = new ExcelUtil();
        $list = $excel->importExecl($file);
        if(!$list || count($list[0]['Content']) < 3) $this->apiError("文件解析失败或内容为空，请检查您的文件并重新上传!");
        $normArr = array();
        $Norm = D('Todo/Rate/Norm');
        foreach ($list[0]['Content'][2] as $index => $title){
            if($index > 1){
                $normInfo = $Norm->findOne(array('way'=>'2','title'=>trim($title), 'tpl_id'=>$info['tpl_id']));
                if(!$normInfo){
                    $this->apiError("指标（".$title."）不存在，或者不是线下导入分数，请检查您的文件并重新上传!");
                }else{
                    $normArr[] = $normInfo['id'];
                }
            }
        }
        if(!$normArr) $this->apiError("无线下导入分数指标，请检查您的文件并重新上传!");

        $this->_loadModel();
        $this->_model->startTrans();
        $error = I('post.error/d',1);
        $exists = I('post.exists/d',1);
        $count = 0;

        foreach($list[0]['Content'] as $i=>$row){
            if($i > 2){
                $ret = $this->_model->importOne($proId, $normArr, $row, $exists);
                if($ret) $count++; //导入一行成功
                else{ //导入一行数据失败
                    if($error == 1){//退出
                        $this->_model->rollback();
                        $this->apiError('第'.$i.'行发生错误:'.$this->_model->getError());
                    }
                }
            }
        }
        $this->_model->commit();
        $this->apiSuccess("成功导入多少".$count."条数据!");
    }
}